package com.etime.shycourse.wx.applets.services.interfaces;


import com.etime.shycourse.wx.applets.dto.CourseDetailsDto;
import com.etime.shycourse.wx.applets.dto.UserTeacherDto;
import com.etime.shycourse.wx.applets.pojo.Lesson;
import com.etime.shycourse.wx.applets.pojo.Orders;
import io.swagger.models.auth.In;

import java.util.List;

/**
 * @ClassName : WxCourseDetailsServices  //类名
 * @Description : 微信课程详情服务  //描述
 * @Author : W //作者
 * @Date: 2022/1/4  9:24
 */
public interface WxCourseDetailsServices {


    /**
     * 根据课程信息 里面的教师id 查询出教师信息
     *
     * @param courseteacherid Course表中 courseteacherid
     * @return UserTeacherDto
     */
    UserTeacherDto selectUserTeacherDtoById(Integer courseteacherid);


    /**
     * test
     * 课程基本信息
     * <p>
     * 根据课程id 查询到 ”自己的“ 课程详细信息（课程类型信息+教师表+用户表+机构表+课程信息 +章节信息+课时信息+评论列表）
     * 教师表（教师简介，教师titile），用户表（教师姓名/nickname），机构表（机构名称，机构简介）；
     * 章节列表；课时列表；课程评论列表；
     * <p>
     * whetherToBuy 判定是否 有购买其订单中 包含其课程中的章节,给字段标识 whetherToBuy
     *
     * @param courseId
     * @return CourseDetailsDto
     */
    CourseDetailsDto selectCourseDetailsDtoSById(Integer courseId, String token);

    /**
     * test 转换  ===》 按 课程 章节 课时购买则给出字段标识
     * 课程基本信息
     * <p>
     * 根据课程id 查询到 ”自己的“ 课程详细信息（课程类型信息+教师表+用户表+机构表+课程信息 +章节信息+课时信息+评论列表）
     * 教师表（教师简介，教师titile），用户表（教师姓名/nickname），机构表（机构名称，机构简介）；
     * 章节列表；课时列表；课程评论列表；
     * <p>
     * whetherToBuy 判定是否 有购买其订单中 包含其课程中的章节,给字段标识 whetherToBuy
     *
     * @param courseId
     * @return CourseDetailsDto
     */
    @Deprecated
    CourseDetailsDto selectCourseDetailsDtoSByIdConvert(Integer courseId, String token);


    /**
     * 微信
     * 根据课程id 用户id 查出改课程相关 订单id 订单on
     * 按用户 ID 课程 ID 获取订单
     *
     * @param courseId
     * @param token
     * @return Orders
     */
    Orders selectOrdersByUserIdCourseId(Integer courseId, String token);

    /**
     * 2022-02-25 15:58:37
     * 根据课时id 查询出课时的 标题 课程类型（文本）
     * 为了解决前端页面不好渲染问题
     * <p></p>
     *
     * @param lessonId
     * @return Lesson
     * @Author wb
     **/
    Lesson selectLessonById(Integer lessonId);
}
